export const sleep = async (ms: number) => {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(true);
        }, ms);
    });
};

/**
 * @function thousandBitSeparator 分隔千分位
 * @param num 数字
 * @param char 分隔符:默认为,
 * @param dealDecimal 分是否处理小数点后的数，默认为false
 */
export const thousandBitSeparator = (num: number, char = ',', dealDecimal = false) => {
    const [int = '0', decimal = ''] = num.toString().split('.');
    const turnInteger = int.replace(/(\d)(?=(\d{3})+$)/g, $1 => $1 + char); // 被转换的整数
    if (dealDecimal && decimal) {
        const turnDecimal = decimal.replace(/(\d)(?=(\d{3})+$)/g, $1 => $1 + char); // 被转换的整数
        return `${turnInteger}.${turnDecimal}`;
    }
    return decimal ? `${turnInteger}.${decimal}` : turnInteger;
};

/**
 * @function compareVersion 比较版本号
 * @param curVersion 当前版本号
 * @param tarVersion 目标版本号
 */
export const compareVersion = (curVersion: string, tarVersion: string): boolean => {
    if (!curVersion || !tarVersion) return false;
    const curVersionArr = curVersion.split('.').map(Number);
    const tarVersionArr = tarVersion.split('.').map(Number);
    const len = Math.max(curVersionArr.length, tarVersionArr.length);
    // 逐个比较对应位置的数字大小，如果不相等则返回比较结果
    for (let i = 0; i < len; i++) {
        const num1 = curVersionArr[i] || 0;
        const num2 = tarVersionArr[i] || 0;
        if (num1 < num2) {
            return false;
        } else if (num1 > num2) {
            return true;
        }
    }
    // 如果所有位置的数字都相等，则版本号相等
    return true;
};

// 定义一个日期格式化方法
export function formatDate(date: any) {
    const months = [
        'Jan.',
        'Feb.',
        'Mar.',
        'Apr.',
        'May.',
        'Jun.',
        'Jul.',
        'Aug.',
        'Sep.',
        'Oct.',
        'Nov.',
        'Dec.',
    ];

    const day = ('0' + date.getDate()).slice(-2);
    const month = months[date.getMonth()];
    const year = date.getFullYear();

    return month + ' ' + day + ', ' + year;
}
